<?php

namespace Drinkiit\BlogBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
use Drinkiit\UtilisateurBundle\Entity\UtilisateurApp;
use Drinkiit\BlogBundle\Entity\Operations;

use Drinkiit\BlogBundle\Handler\AdminUtilisateurHandler;
use Drinkiit\BlogBundle\Handler\AdminOperationsUserHandler;
use Drinkiit\BlogBundle\Form\AdminUtilisateurType;
use Drinkiit\BlogBundle\Form\AdminOperationsUserPersoType;

class AdminUtilisateurController extends Controller
{
	public function em($objet) {
		return $this->getDoctrine()->getEntityManager()->getRepository($objet) ;
	}
	
	public function userAction()
	{
		// si on a envoyé un mail à quelqu'un on récupère son pseudo
		$pseudo = $this->getRequest()->query->get('pseudo') ;
		if ( !empty($pseudo) )
		{
			$pseudo = 'Le mail a bien été envoyé à '.$pseudo ;
			$this->get('logger')->info("[INFO] On affiche en notification : [".$pseudo."]") ;
		} else {
			$this->get('logger')->info("[INFO] Pas de variable pseudo envoyée") ;
			$note = '' ;
		}
		
		// on cherche tous les utilisateurs pour les affichés
		$liste_utilisateurs = $this->em('Drinkiit\UtilisateurBundle\Entity\UtilisateurApp')->findAll() ;
		
		$this->get('logger')->info("[INFO] Liste des ".count($liste_utilisateurs)." utilisateurs") ;
		return $this->render('DrinkiitBlogBundle:Admin:Utilisateur.html.twig', array(
			'titre' => 'Gérer les utilisateurs',
			'liste' => $liste_utilisateurs,
			'notification' => $pseudo,
		));
	}
	
	public function one_userAction($id, $notification='')
	{
		// si on a cliqué sur l'un des utilisateur
		$pseudo = $this->getRequest()->query->get('pseudo') ;
		if ( !empty($pseudo) )
		{
			$this->get('logger')->info("[INFO] On a bien modifié l'utilisateur ".$pseudo) ;
			$note = $pseudo.' bien modifié.' ;
		} else {
			$this->get('logger')->info("[INFO] Pas de variable pseudo envoyée") ;
			$note = '' ;
		}
		
		$note1 = $this->getRequest()->query->get('notification') ; // si elle arrive par méthode get
		if ( !empty($note1) ) { $note = $note1 ; }
		
		if ( !empty($notification) ) // on a une notification affichons la
		{
			$this->get('logger')->info("[INFO] Une notification [$notification] est prioritaire sur [$pseudo]") ;
			$note = $notification ;
		}
		
		// on récupère toutes les informations relatives à l'utilisateur n° $id
		$user = $this->em('Drinkiit\UtilisateurBundle\Entity\UtilisateurApp')->find($id) ;
		
		$form = $this->createForm(new AdminUtilisateurType);
		
		// si on veut créer une opération
		$operation = new Operations();
		$operation->setDate(new \DateTime("now")) ;
		$operation->setOperationUtilisateur($user) ;
		
		$form1 = $this->createForm(new AdminOperationsUserPersoType, $operation);
		
		$formHandler = new AdminUtilisateurHandler($form, $this->get('request'), $this, $this->getDoctrine()->getEntityManager());
		$formHandler1 = new AdminOperationsUserHandler($form1, $this->get('request'), $this, $this->getDoctrine()->getEntityManager());
		
        if( $formHandler->process() )
        {
			$this->get('logger')->info("[INFO] Formulaire bien validé, d'ou la redirection [admin_management_one_user]") ;
            return $this->redirect( $this->generateUrl('admin_management_one_user', array( 'id' => $id, 'pseudo' => $user->getUsername()) ) );
        }
		if( $formHandler1->process() )
        {
			$this->get('logger')->info("[INFO] Formulaire bien validé, d'ou la redirection [admin_management_one_user]") ;
            return $this->redirect( $this->generateUrl('admin_management_one_user', array( 'id' => $id, 'notification' => "L'opération a bien été affectée pour ".$user->getUsername()) ) );
        }
        
		$liste_commandes = $this->em('DrinkiitBlogBundle:Commande')->findBy( array('utilisateur_commande' => $user->getId(), 'est_payee' => false, 'validee' => true, 'est_menu' => false), array('date_commande' => 'desc')) ;
		
		$this->get('logger')->info("[INFO] Liste des ".count($liste_commandes)." commandes validées et non payées de l'utilisateur n°".$user->getId()) ;
		return $this->render('DrinkiitBlogBundle:Admin:Utilisateur_one.html.twig', array(
			'titre' => 'Gérer '.$pseudo,
			'user' => $user,
			'form' => $form->createView(),
			'form1' => $form1->createView(),
			'liste_commandes' => $liste_commandes,
			'notification' => $note,
		));
	}
}
